package com.hfzy.ihk.facade.linkcall.vo.knowledgeBase;

import com.hfzy.ihk.facade.linkcall.enums.*;
import com.hfzy.ihk.facade.linkcall.vo.KnowledgeBaseResultVo;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

import java.util.LinkedList;
import java.util.List;

/**
 * @Auther: Administrator
 * @Date: 2018/8/8 20:28
 * @Description:
 * 知识库模块的Vo
 */
public class KnowledgeBaseVo {

    public KnowledgeBaseVo() {
    }

    /**
     * 每页大小
     */
    private Integer limit;

    /**
     * 当前页
     */
    private Integer page;

    /**
     * ID
     */
    private String id;

    private long version;

    /**
     * 标题：客户意图
     * */

    private String title;


    private KnowledgeType knowledgeType;

    /**关键字列表*/

    private List<String> keyworlds;

    /**问法*/

    private String howAskQuestions;

    /**
     *问法,专门用于接受小程序传过来的问法
     */

    private List<String> howAskQuestionsForApp;


    /**
     * flag, 1 代表的是由小程序调用接口
     */
    private String fromApp;


    /**回答方式*/

    private AnswerType answerType;

    /**
     * 单机问答答案
     * 有多个，随机出一个
     * */

    private LinkedList<String> oneToOneResult;

    /**回答后操作*/
    private AfterAnswerOptionalType afterAnswerOptionalType;

    /**跳转到指定流程*/
    private String skipFlowId;

    /**
     * 多轮会话流程ID
     * */

    private String mutiSessionFlowId;

    /**
     * 创建值ID
     */
    private long createUserId;

    /**
     * 所属话术包ID
     */
    private String  packageId;

    private boolean actionCodeBreak=false;//是否可以打断

    private List<KnowledgeUsageType> usageTypes;

    /**
     * 所属的类型
     * 如果是公共的 ==》 则packageId 是 指定的行业类型
     * */
    private AffectType affectType = AffectType.PRIVATE;//如果没有指定 默认是私有的

    private String belongIndustryTypeId;//所属的行业类型id

    private String refPackageId;//关联的 packageId


    /**
     * 单句问答对象
     * */
    private List<KnowledgeBaseResultVo> knowledgeBaseResultVos;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public long getVersion() {
        return version;
    }

    public void setVersion(long version) {
        this.version = version;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public KnowledgeType getKnowledgeType() {
        return knowledgeType;
    }

    public void setKnowledgeType(KnowledgeType knowledgeType) {
        this.knowledgeType = knowledgeType;
    }

    public List<String> getKeyworlds() {
        return keyworlds;
    }

    public void setKeyworlds(List<String> keyworlds) {
        this.keyworlds = keyworlds;
    }

    public String getHowAskQuestions() {
        return howAskQuestions;
    }

    public void setHowAskQuestions(String howAskQuestions) {
        this.howAskQuestions = howAskQuestions;
    }

    public AnswerType getAnswerType() {
        return answerType;
    }

    public void setAnswerType(AnswerType answerType) {
        this.answerType = answerType;
    }

    public LinkedList<String> getOneToOneResult() {
        return oneToOneResult;
    }

    public void setOneToOneResult(LinkedList<String> oneToOneResult) {
        this.oneToOneResult = oneToOneResult;
    }

    public AfterAnswerOptionalType getAfterAnswerOptionalType() {
        return afterAnswerOptionalType;
    }

    public void setAfterAnswerOptionalType(AfterAnswerOptionalType afterAnswerOptionalType) {
        this.afterAnswerOptionalType = afterAnswerOptionalType;
    }

    public String getSkipFlowId() {
        return skipFlowId;
    }

    public void setSkipFlowId(String skipFlowId) {
        this.skipFlowId = skipFlowId;
    }

    public String getMutiSessionFlowId() {
        return mutiSessionFlowId;
    }

    public void setMutiSessionFlowId(String mutiSessionFlowId) {
        this.mutiSessionFlowId = mutiSessionFlowId;
    }

    public long getCreateUserId() {
        return createUserId;
    }

    public void setCreateUserId(long createUserId) {
        this.createUserId = createUserId;
    }

    public Integer getLimit() {
        return limit;
    }

    public void setLimit(Integer limit) {
        this.limit = limit;
    }

    public Integer getPage() {
        return page;
    }

    public void setPage(Integer page) {
        this.page = page;
    }

    public String getPackageId() {
        return packageId;
    }

    public void setPackageId(String packageId) {
        this.packageId = packageId;
    }

    public List<String> getHowAskQuestionsForApp() {
        return howAskQuestionsForApp;
    }

    public void setHowAskQuestionsForApp(List<String> howAskQuestionsForApp) {
        this.howAskQuestionsForApp = howAskQuestionsForApp;
    }

    public String getFromApp() {
        return fromApp;
    }

    public void setFromApp(String fromApp) {
        this.fromApp = fromApp;
    }

    public boolean isActionCodeBreak() {
        return actionCodeBreak;
    }

    public void setActionCodeBreak(boolean actionCodeBreak) {
        this.actionCodeBreak = actionCodeBreak;
    }

    public List<KnowledgeUsageType> getUsageTypes() {
        return usageTypes;
    }

    public void setUsageTypes(List<KnowledgeUsageType> usageTypes) {
        this.usageTypes = usageTypes;
    }

    public String getBelongIndustryTypeId() {
        return belongIndustryTypeId;
    }

    public void setBelongIndustryTypeId(String belongIndustryTypeId) {
        this.belongIndustryTypeId = belongIndustryTypeId;
    }

    public AffectType getAffectType() {
        return affectType;
    }

    public void setAffectType(AffectType affectType) {
        this.affectType = affectType;
    }

    public String getRefPackageId() {
        return refPackageId;
    }

    public void setRefPackageId(String refPackageId) {
        this.refPackageId = refPackageId;
    }

    public List<KnowledgeBaseResultVo> getKnowledgeBaseResultVos() {
        return knowledgeBaseResultVos;
    }

    public void setKnowledgeBaseResultVos(List<KnowledgeBaseResultVo> knowledgeBaseResultVos) {
        this.knowledgeBaseResultVos = knowledgeBaseResultVos;
    }
}
